第 14 章:尋找錯誤與錯誤排查
查看系統 event 事件
kubectl describe pod $PODNAME
kubectl events
查看系統日誌
kubectl logs $PODNAME -c #CONTAINERNAME
查看 kubernetes 服務日誌
systemctl status kube-controller-manager -l
journalctl -u kube-controller-manager
Application Failure
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-world
spec:
replicas: 1
selector:
matchLabels:
app: hello-world
template:
metadata:
labels:
app: hello-world
spec:
containers:
- name: hello-world
image: gcr.io/google-samples/hello-app:1.o
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: hello-world
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
app: helloworld
Troubleshooting Control Plane
- Server online
- Network reachability
- systemd
- container runtime
- kubelet
- static pod manifest
static pod config: /var/lib/kubelet/config.yaml staticPodPath
control plane
# check kube-system pods
kubectl get pods --namespaces kube-system
# user container runtime
crictl --runtime-endpoint unix:///run/containerd/containerd.sock ps
# check static pod configuration
sudo more /var/lib/kubelet/config.yaml
sudo ls -l /etc/kubernetes/manifest
Workloads
check resource , describe, get, event, logs.
Troubleshooting Nodes
- Server online
- Network reachability
- systemd
- container runtime
- kubelet
- kube-proxy
kubelet
# get status
systemctl status kubelet.service --no-pager
# start on system boot
systemctl enable kubelet.service
# start kubelet
systemctl start kubelet.service
# journallog
sudo journalctl -u kubelet.service --no-pager
# systemd service unit cfg
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
# kubelet config
/var/lib/kubelet/config.yaml